#include <arpa/inet.h>
#include <unistd.h>
#include <cstring>
#include <iostream>
#include <string>
using namespace std;

int main() {
    int sock = socket(AF_INET, SOCK_STREAM, 0);
    if (sock == -1) {
        perror("socket");
        exit(1);
    }
    sockaddr_in addr;
    addr.sin_family = AF_INET;
    addr.sin_port = htons(9999);
    inet_pton(AF_INET, "127.0.0.1", &addr.sin_addr.s_addr);
    int c = connect(sock, (sockaddr*)&addr, sizeof(addr));
    if (c == -1) {
        perror("connect");
        exit(1);
    }
    cout << "connected" << endl;
    int i = 0;
    constexpr int COUNT = 20;
    // while (i < 20) {
    //     char buff[1024]{0};
    //     sprintf(buff, "Hello %d from client", i++);
    //     const int len = strlen(buff);
    //     char temp[len + 4]{0};
    //     memcpy(temp, (char*)&len, 4);
    //     memcpy(temp + 4, buff, len);
    //     send(sock, temp, strlen(buff) + 4, 0);
    // }
    string str;
    char buf[1024]{0};
    int n = recv(sock, buf, 1024, 0);
    if (n==0) {
        cout << "server close" << endl;
        close(sock);
        return 0;
    }
    // while (i > 0) {
    //     char buff[1024]{0};
    //     int n = recv(sock, buff, 1024, 0);
    //     if (n == -1) {
    //         perror("recv");
    //         exit(1);
    //     }
    //     str.append(buff, n);
    //     while (1) {
    //         // 前四个字节是长度
    //         uint32_t len;
    //         memcpy(&len, str.data(), 4);
    //         if (len + 4 > str.size()) {
    //             break;
    //         }
    //         string msg(str.data() + 4, len);
    //         str.erase(0, 4 + len);
    //         cout << "recv: " << msg << endl;
    //         i--;
    //     }
    // }
    close(sock);

    return 0;
}